home *** CD-ROM | disk | FTP | other *** search
- Path: xanth!cs.odu.edu!Amiga-Request
- From: Amiga-Request@cs.odu.edu (Amiga Sources/Binaries Moderator)
- Newsgroups: comp.sources.amiga
- Subject: v90i061: cVBR - change vector base register, Part01/01
- Message-ID: <11352@xanth.cs.odu.edu>
- Date: 9 Feb 90 20:28:34 GMT
- Sender: tadguy@cs.odu.edu
- Reply-To: mjl@alison.at (Martin J. Laubach)
- Lines: 493
- Approved: tadguy@cs.odu.edu (Tad Guy)
- X-Mail-Submissions-To: Amiga@cs.odu.edu
- X-Post-Discussions-To: comp.sys.amiga
-
- Submitted-by: mjl@alison.at (Martin J. Laubach)
- Posting-number: Volume 90, Issue 061
- Archive-name: kernel/cvbr
-
- [ uuencoded executable included. ...tad ]
-
- This is a small tool that will move the exception vector table (on 68010
- or higher).
-
- mjl
-
- #!/bin/sh
- # This is a shell archive. Remove anything before this line, then unpack
- # it by saving it into a file and typing "sh file". To overwrite existing
- # files, type "sh file -c". You can also feed this as standard input via
- # unshar, or by typing "sh <file", e.g.. If this archive is complete, you
- # will see the following message at the end:
- # "End of archive 1 (of 1)."
- # Contents: Vbr.Asm Vbr.uu vbr.doc
- # Wrapped by tadguy@xanth on Fri Feb 9 15:27:53 1990
- PATH=/bin:/usr/bin:/usr/ucb ; export PATH
- if test -f 'Vbr.Asm' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'Vbr.Asm'\"
- else
- echo shar: Extracting \"'Vbr.Asm'\" \(2540 characters\)
- sed "s/^X//" >'Vbr.Asm' <<'END_OF_FILE'
- X*
- X* Change the vector base register on 68010+
- X*
- X* by Martin J. Laubach
- X*
- X
- X;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- X
- X incdir "inc:include.i"
- X
- X include "exec/execbase.i"
- X include "exec/libraries.i"
- X include "exec/tasks.i"
- X
- X;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- X
- X xdef main
- X
- X xref _AbsExecBase
- X
- X;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- X
- Xcall macro
- X xref _LVO\1
- X jsr _LVO\1(a6)
- X endm
- X
- X;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- X
- Xstdout equr d7
- XDosBase equr a5
- XTask equr a4
- X
- X;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- X
- Xmain: move.l _AbsExecBase,a6
- X lea DosName,a1
- X moveq #0,d0
- X call OpenLibrary ; Open DOSBase to chat with user
- X move.l d0,DosBase
- X tst.l d0
- X beq exit
- X
- X move.l d0,a6
- X call Output ; get stdout
- X move.l d0,stdout
- X
- X move.l d0,d1
- X move.l #SignOn,d2
- X moveq #SignOnEnd-SignOn,d3
- X call Write ; say hello
- X
- X move.l _AbsExecBase,a6
- X cmp.w #33,LIB_VERSION(a6)
- X bls noversion ; check for the right kickstart
- X
- X btst.b #AFB_68010,AttnFlags+1(a6)
- X beq novbr ; and the right processor
- X
- X move.l a5,a0
- X lea getvbr,a5
- X call Supervisor ; become SUPERMAN!
- X
- X tst.l d4
- X bne.s already ; vbr already set
- X
- X move.l #$400,d0
- X moveq #0,d1
- X call AllocMem ; get memory block for vectors
- X move.l d0,Memory
- X beq.s nomem
- X
- X sub.l a0,a0
- X move.l Memory,a1
- X move.l #$400,d0
- X call CopyMem ; now copy the exception vectors
- X
- X move.l Memory,d4
- X move.l a5,a0
- X lea setvbr,a5
- X call Supervisor
- X
- Xexit0: move.l DosBase,a1
- X move.l _AbsExecBase,a6
- X call CloseLibrary ; clean up
- X
- Xexit: moveq #0,d0
- X rts
- X
- Xgetvbr: move.l a0,a5
- X movec.l vbr,d4
- X rte
- X
- Xsetvbr: move.l a0,a5
- X movec.l d4,vbr
- X rte
- X
- Xalready:
- X move.l d4,d5
- X
- X moveq #0,d4
- X move.l a5,a0
- X lea setvbr,a5
- X call Supervisor
- X
- X move.l d5,a0
- X sub.l a1,a1
- X move.l #$400,d0
- X call CopyMem
- X
- X move.l d5,a1
- X move.l #$400,d0
- X call FreeMem
- X
- X move.l #Already,d2
- X moveq #AlreadyEnd-Already,d3
- X bra.s Panic
- X
- Xnomem: move.l #NoMem,d2
- X moveq #NoMemEnd-NoMem,d3
- X bra.s Panic
- X
- Xnovbr: move.l #ProcErr,d2
- X moveq #ProcErrEnd-ProcErr,d3
- X bra.s Panic
- X
- Xnoversion:
- X move.l #VerErr,d2
- X moveq #VerErrEnd-VerErr,d3
- XPanic: move.l DosBase,a6
- X move.l stdout,d1
- X call Write
- X bra.s exit0
- X
- X;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- X
- XMemory: dc.l 0
- XOldTrap: dc.l 0
- X
- XDosName: dc.b 'dos.library',0
- XSignOn: dc.b 'cVBR (c) Copyright 1989 by Martin J. Laubach',10
- XSignOnEnd:
- XVerErr: dc.b '*** You need at least version 1.2 of the OS '
- X dc.b 'to use cVBR',10
- XVerErrEnd:
- XProcErr: dc.b '*** You really should have an 68010 to run cVBR',10
- XProcErrEnd:
- XNoMem: dc.b '*** You haven't got $400 more bytes...',10
- XNoMemEnd:
- XAlready: dc.b '*** VBR already changed, reverting to normal',10
- XAlreadyEnd:
- END_OF_FILE
- if test 2540 -ne `wc -c <'Vbr.Asm'`; then
- echo shar: \"'Vbr.Asm'\" unpacked with wrong size!
- fi
- # end of 'Vbr.Asm'
- fi
- if test -f 'Vbr.uu' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'Vbr.uu'\"
- else
- echo shar: Extracting \"'Vbr.uu'\" \(912 characters\)
- sed "s/^X//" >'Vbr.uu' <<'END_OF_FILE'
- Xbegin 664 Vbr
- XM```#\P`````````#``````````(```!\``````````````/I````?"QY````$
- XM!$/Y```!%'``3J[]V"I`2H!G``"&+$!.KO_$+@`B`"0\```!('8M3J[_T"QY&
- XM````!`QN`"$`%&,``+P(+@```2EG``"H($U+^0```*).KO_B2H1F6"`\```$=
- XM`'(`3J[_.B/````!#&=XD<@B>0```0P@/```!`!.KOV0*#D```$,($U+^0``_
- XM`*I.KO_B(DTL>0````1.KOYB<`!.=2I(3GI(`4YS*DA.>T@!3G,J!'@`($U+5
- XM^0```*I.KO_B($63R2`\```$`$ZN_9`B12`\```$`$ZN_RXD/````<)V+6`<<
- XM)#P```&U=@U@$B0\```!A78P8`@D/````4UV."Q-(@=.KO_08(8`````````N
- XM`&1O<RYL:6)R87)Y`&-60E(@*&,I($-O<'ER:6=H="`Q.3@Y(&)Y($UA<G1IV
- XM;B!*+B!,875B86-H"BHJ*B!9;W4@;F5E9"!A="!L96%S="!V97)S:6]N(#$N*
- XM,B!O9B!T:&4@3U,@=&\@=7-E(&-60E(**BHJ(%EO=2!R96%L;'D@<VAO=6QDD
- XM(&AA=F4@86X@-C@P,3`@=&\@<G5N(&-60E(**BHJ(%EO=2!H879E;BHJ*B!6"
- XM0E(@86QR96%D>2!C:&%N9V5D+"!R979E<G1I;F<@=&\@;F]R;6%L"@````/L'
- XM````#``````````(````)@```$X```!H````<@```((```"*````N@```-X`&
- XK``#H````\@```/P````````#\@```^D````````#\@```^H````````#\MX`L
- X``
- Xend
- Xsize 628
- END_OF_FILE
- if test 912 -ne `wc -c <'Vbr.uu'`; then
- echo shar: \"'Vbr.uu'\" unpacked with wrong size!
- fi
- # end of 'Vbr.uu'
- fi
- if test -f 'vbr.doc' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'vbr.doc'\"
- else
- echo shar: Extracting \"'vbr.doc'\" \(4210 characters\)
- sed "s/^X//" >'vbr.doc' <<'END_OF_FILE'
- X
- X
- X Page 1 cVBR's Documentation Page 1
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X RM
- X (c) Copyright 1989 by Martin J. Laubach
- X All rights reserved
- X
- X
- X
- X
- X
- X
- X
- X
- X 1. Introduction
- X
- X cVBR is a small tool that will move the exception vector table
- X of the CPU somewhere else than it's supposed to be.
- X
- X 2. How to
- X
- X Running vbr once will allocate some memory, copy the exception
- X and interrupt vector table, and then change the VBR to point
- X there.
- X
- X Running vbr a second time will copy the tables back where they
- X are supposed to be, and clear the VBR register.
- X
- X 3. Advantages
- X
- X There are two advantages I can think of: first, any program
- X that accesses the exception and/or interrupt vectors directly
- X instead of using the exec functions will cease to work --
- X especially those dirty "hacker type" programs (sorry, folks).
- X This in my opinion, really *is* an advantage.
- X Second, when fast RAM is available, the new vector tables are
- X allocated there. This should result in faster interrupt and
- X exception processing, especially when there is a lot of DMA to
- X chip memory going on (disk accesses, blitter blittings, overscan
- X screens).
- X
- X
- X
- X
- X Advantages
- X
- X
- X Page 2 cVBR's Documentation Page 2
- X
- X
- X 4. What
- X
- X In this archive, you should find the following files:
- X
- X vbr.doc .... What you are reading right now.
- X vbr.asm .... The source for rm.
- X vbr ........ The executable
- X
- X
- X 5. Where
- X
- X If you have any comments, ideas what could or should be
- X improved, bug reports or just like to chat a bit, please feel
- X free to contact me at one of the following addresses... I just
- X *love* receiving mail!
- X
- X Usenet: mjl@alison.at
- X ..!uunet!mcsun!tuvie!alison!mjl
- X
- X or
- X
- X FidoNet: "Martin Laubach" at 2:310/3.14
- X
- X
- X Looking forward to reading from you,
- X
- X mjl
- X
- X
- X
- X 6. License
- X
- X This material is (c) Copyright 1989 by Martin J. Laubach -- All
- X rights reserved.
- X
- X It may be distributed freely as long as the following
- X restrictions are met:
- X
- X The distributor may charge a fee to recover distribution
- X costs. The fee for diskette distribution should not be more than
- X the cost to obtain the same diskette from Fred Fish.
- X
- X The distributor agrees to cease distributing the programs and
- X data involved if requested to do so by the author.
- X
- X You may copy and distribute verbatim copies of the program's
- X executable code and documentation as you receive it, in any
- X medium, provided that you conspicuously and appropriately
- X publish only the original, unmodified program, with all
- X copyright notices and disclaimers of warranty intact and
- X including all the accompanying documentation, example files and
- X anything else that came with the original.
- X
- X The author will not be liable for any damage arising from the
- X
- X
- X License
- X
- X
- X Page 3 cVBR's Documentation Page 3
- X
- X
- X failure of this program to perform as described, or any
- X destruction of other programs or data residing on a system
- X attempting to run the program. While I know of no damaging
- X errors, the user of this program uses it at his or her own
- X risk.
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X License
- X
- X
- X Page 4 cVBR's Documentation Page 4
- X
- X
- X 7. Road Map
- X
- X
- X
- X 1. Introduction .................................... 1
- X 2. How to ........................................... 1
- X 3. Advantages ...................................... 1
- X 4. What ............................................ 1
- X 5. Where ........................................... 2
- X 6. License ......................................... 2
- X 7. Road Map ......................................... 4
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X
- X Road Map
- X
- END_OF_FILE
- if test 4210 -ne `wc -c <'vbr.doc'`; then
- echo shar: \"'vbr.doc'\" unpacked with wrong size!
- fi
- # end of 'vbr.doc'
- fi
- echo shar: End of archive 1 \(of 1\).
- cp /dev/null ark1isdone
- MISSING=""
- for I in 1 ; do
- if test ! -f ark${I}isdone ; then
- MISSING="${MISSING} ${I}"
- fi
- done
- if test "${MISSING}" = "" ; then
- echo You have the archive.
- rm -f ark[1-9]isdone
- else
- echo You still need to unpack the following archives:
- echo " " ${MISSING}
- fi
- ## End of shell archive.
- exit 0
- --
- Mail submissions (sources or binaries) to <amiga@cs.odu.edu>.
- Mail comments to the moderator at <amiga-request@cs.odu.edu>.
- Post requests for sources, and general dicussion to comp.sys.amiga.
-